package br.com.sgc.dao;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.Query;

import org.hibernate.Criteria;
import org.hibernate.criterion.Restrictions;

import br.com.sgc.entities.seguranca.Usuario;
import br.com.sgc.exception.ValidacaoException;

@Stateless
public class SegurancaDao extends GenericDao<Usuario>{

	private static final long serialVersionUID = -3361812320494433036L;
	
	public Usuario login(Usuario usuario){
		Criteria criteria = getCriteria(Usuario.class);
		criteria.add(Restrictions.eq("login", usuario.getLogin()));
		Usuario usuarioLogado = (Usuario) criteria.uniqueResult();
		if(usuarioLogado.getClinica() != null)
			usuarioLogado.getClinica().toString();
		
		return usuarioLogado;
		
	}
	
	public void findLoginUser(Usuario usuario) throws ValidacaoException{
		Criteria criteria = getCriteria(Usuario.class);
		criteria.add(Restrictions.eq("login", usuario.getLogin()));
		Usuario usuarioLogado = (Usuario) criteria.uniqueResult();
		if(usuarioLogado != null){
			throw new ValidacaoException("Login já utilizado");
		}
	}
	
	@SuppressWarnings("unchecked")
	public Usuario findByLogin(String login){
		Query query = em.createQuery("select u from Usuario u where u.login = :login");
		query.setParameter("login", login);

		List<Usuario> result = query.getResultList();
		return (Usuario)((result.size() == 0) ? null : query.getResultList().get(0));		
	}
	
}
